/**
 * 浏览器插件接口封装
 * @constructor
 */
function WebPlugin() {
  this.deviceId="";
  this.shopCode="";
  try {
    this.webObj = window.chrome.webview.hostObjects;
    this.appConfig = this.webObj.sync.AppConfig;
    this.reg = this.webObj.sync.Reg;
    this.printer = this.webObj.SysPrinter;
    this.screen=this.webObj.sync.Screen;
  }
  catch (e) {
    this.webObj =null;
    this.appConfig = null;
    this.reg = null;
    this.printer = null;
  }
}

WebPlugin.prototype.getId =function() {
  try {
    if (typeof getDeviceId != "undefined") {
      var id = getDeviceId();
      return id;
    } else {
      if (this.appConfig != undefined) {
        var id = this.appConfig.getDeviceId();
        return id;
      }
    }
  } catch (e) {
    return '12345678'
  }
}


WebPlugin.prototype.getDeviceId =function() {
  try {
    return this.deviceId;
  }
  catch (e) {
    return '12345678'
  }
}

WebPlugin.prototype.getCode=function() {
  try {
    if (typeof getShopCode !="undefined") {
      return getShopCode();
    }
    else {
      return this.reg.getValue("SOFTWARE\\cmms\\barconfig","shopCode","");
    }
  }
  catch (e) {
    return 65010441
  }
}
WebPlugin.prototype.getShopCode=function() {
  try {
    return this.shopCode;
  }
  catch (e) {
    return 65010441
  }
}


WebPlugin.prototype.alert = function (msg) {
  return alert(msg);
}

WebPlugin.prototype.close = function () {
  try {
    if (typeof close!="undefined") {
      return close();
    }
    else {
      return this.appConfig.close();
    }
  }
  catch (e) {
    alert(e.message);
  }
}
/**
 * 获取打印机列表
 */
WebPlugin.prototype.getPrints = function () {
  // (async ()=>{
  //     var plist=await getPringList();
  //     return plist;
  // })();
  if (typeof getPrintList != "undefined") {
    var plist = getPrintList();
    return plist;
  }
  else {
    return this.printer.getPrinters();
  }
}

/**
 * 打开双屏
 */
WebPlugin.prototype.openSubWnd=function()
{
  if (typeof openSub!="undefined")
  {
    openSub();
  }
  else {
    (async()=>{
      await this.screen.alwaysClipScreen();
    })();

  }
}

/**
 * 关闭双屏
 */
WebPlugin.prototype.closeSubWnd=function()
{
  if (typeof closeSub!="undefined") {
    closeSub();
  }
  else {
    (async()=>{
      await this.screen.closeClipScreen();
    })();
  }
}

/**
 * 获取浏览器壳版本
 */
WebPlugin.prototype.getVersion = function () {
  if (typeof getAppVersion!="undefined") {
    return getAppVersion();
  }
  else {
    if(this.appConfig){
      return this.appConfig.getAppVersion();
    }else{
      return ''
    }
  }
}

/**
 * 指定的打印机进行打印
 * @param pName
 * @param pList
 */
WebPlugin.prototype.print = function (pName, pList) {
  /**
   * pList 结构：
   * let printInfo=[
   {
        "text":"影厅40-30",
        "fontSize":4,//字体高度（大小）
        "weight":400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName":"宋体",
        "left":40,
        "top":30
      },
   {
        "text": "时间230-30",
        "fontSize": 4,//字体高度（大小）
        "weight": 400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName": "宋体",
        "left": 230,
        "top": 30
      },
   {
        "text":"影厅400-30",
        "fontSize":4,//字体高度（大小）
        "weight":400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName":"宋体",
        "left":400,
        "top":30
      },
   {
        "text":"片名30-80",
        "fontSize":4,//字体高度（大小）
        "weight":400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName":"宋体",
        "left":30,
        "top":80
      },
   {
        "text": "时间400-120",
        "fontSize": 4,//字体高度（大小）
        "weight": 400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName": "宋体",
        "left": 400,
        "top": 120
      },
   {
        "text": "座号30-120",
        "fontSize": 4,//字体高度（大小）
        "weight": 400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName": "宋体",
        "left": 30,
        "top": 120
      },
   {
        "text": "票类30-160",
        "fontSize": 4,//字体高度（大小）
        "weight": 400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName": "宋体",
        "left": 30,
        "top": 160
      },
   {
        "text": "票价230-130",
        "fontSize": 4,//字体高度（大小）
        "weight": 400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName": "宋体",
        "left": 230,
        "top": 130
      },
   {
        "text": "服务费240-150",
        "fontSize": 4,//字体高度（大小）
        "weight": 400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName": "宋体",
        "left": 240,
        "top": 150
      },
   {
        "text": "售票时间50-200",
        "fontSize": 4,//字体高度（大小）
        "weight": 400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName": "宋体",
        "left": 50,
        "top": 200
      },
   {
        "text": "工号230-190",
        "fontSize": 4,//字体高度（大小）
        "weight": 400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName": "宋体",
        "left": 230,
        "top": 190
      },
   {
        "text": "座号400-220",
        "fontSize": 4,//字体高度（大小）
        "weight": 400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName": "宋体",
        "left": 400,
        "top": 220
      },
   {
        "text": "票号400-320",
        "fontSize": 4,//字体高度（大小）
        "weight": 400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName": "宋体",
        "left": 400,
        "top": 320
      },
   {
        "text": "票价400-420",
        "fontSize": 4,//字体高度（大小）
        "weight": 400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName": "宋体",
        "left": 400,
        "top": 420
      },
   {
        "text":"",
        "fontSize":4,//字体高度（大小）
        "weight":400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
        "fontName":"宋体",
        "left":40,
        "top":30,
        "qrCode":{
          "code":"http://www.baido.com",
          "left":50,
          "top":120,
          size:80
        }
      },
   ];
   */
  //debugger
  if (typeof getPrintList !="undefined") {
    print(pName, 360, 280, 1,pList);
    //print("2120TF(标签)", 360, 280, 1, info)
    //this.printer.printV2(pName,JSON.stringify(pList));
  }
  else {
    (async () => {
      this.printer.Print(pName,JSON.stringify(pList));
    })();
  }

}

WebPlugin.prototype.print1 = function (printName, fontSize, json,width,height) {
  try{
      //debugger
      let bottomRows=this.getJson("printSettings","PaperBottom");
      if (bottomRows!="" && bottomRows!=undefined && bottomRows!=null && bottomRows!="0")
      {
          bottomRows=parseInt(bottomRows);
          let printList=JSON.parse(json);
          for(var i=0;i<bottomRows-1;i++)
          {
              printList.push({content:" ",type:"string",fontSize:fontSize});
          }
          printList.push({content:"-",type:"string"});
          json=JSON.stringify(printList);
      }
      if (typeof printer != "undefined") {
          return JSON.parse(printer.printWithPageSize(printName, fontSize, json,width,height));
      }
      else {
          let printList=JSON.parse(json);
          for(var i=0;i<printList.length-1;i++)
          {
              printList[i].fontSize=fontSize;
          }
          return JSON.parse(this.printer.print(printName, JSON.stringify(printList)));
      }
  } catch (e) {
      return { "code": -1, "message": _("设备对象不存在"), "success": false }
  }
}
/**
 * 用指定的打印机进行打印，Pos58打印机
 * @param pName
 * @param pList
 */
WebPlugin.prototype.printStrList = function (pName, strList) {
  let printInfo=[];

  for(var i=0;i<strList.length;i++)
  {
    var item={
      "text": strList[i],
      "fontSize": 5,//字体高度（大小）
      "weight": 400,  	//在0到1000，400表示标准体，700表示黑（粗）体。
      "fontName": "宋体",
      "left": 0,
      "top": (i+1)*30
    }
    printInfo.push(item);
  }
  this.print(pName,printInfo);
}
/**
 * 写日志
 * */
WebPlugin.prototype.writeLog = function (message) {
  try {
    if (typeof appConfig == "undefined") {
      return { "code": -1, "message": _("设备对象不存在"), "success": false }
    }
    return this.appConfig.writeLog(message);
  } catch (e) {

  }
}


/**
 * 读取本地配置文件
 * */
WebPlugin.prototype.getData = function (filename,key,def) {
  try {
    if (typeof getPrintList != "undefined") {
      return localStorage.getItem(key);
    }
    else {
      return this.appConfig.getJson(filename, key, def);
    }
  } catch (e) {
    return  localStorage.getItem(key);
  }
}
/**
 * 读取本地配置文件
 * */
WebPlugin.prototype.setData = function (filename,key,value) {
  try {
    if (typeof getPrintList != "undefined") {
      return  localStorage.setItem(key,value);
    }
    else {
      return this.appConfig.setJson(filename, key, value);
    }
  } catch (e) {
    return  localStorage.setItem(key,value);
  }
}

WebPlugin.prototype.getReg = function (address,key,defValue) {
  try {
      if (typeof appConfig != "undefined") {
          return JSON.parse(appConfig.getReg(address,key,defValue));
      } else {
          return JSON.parse(this.appConfig.getReg(address,key,defValue));
      }
  } catch (e) {
      return {"code": -1, "message": _("设备对象不存在"), "success": false}
  }
}

WebPlugin.prototype.setLan = function (lan,key) {
  try {
      if (typeof appConfig != "undefined") {
          return this.reg.setValue("SOFTWARE\\" + appConfig.getAppConfig("AppName", "config"), "Language", lan);
      }
      else {
          return this.reg.setValue("SOFTWARE\\" + this.appConfig.getAppConfig("AppName", "config"), "Language", lan);
      }
  } catch (e) {
      localStorage.setItem(key,lan)
      return  {"code": -1, "message": _("设备对象不存在"), "success": false}
  }
}